home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 April: Mac OS SDK / Dev.CD Apr 98 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / PInterfaces / QuickTimeVR.p < prev    next >
Encoding:
Text File  |  1998-02-12  |  30.5 KB  |  722 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        QuickTimeVR.p
  3.  
  4.      Contains:    QuickTime VR interfaces
  5.  
  6.      Version:    Technology:    QuickTime VR 2.1
  7.                  Release:    Universal Interfaces 3.1
  8.  
  9.      Copyright:    © 1997-1998 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. }
  18. {$IFC UNDEFINED UsingIncludes}
  19. {$SETC UsingIncludes := 0}
  20. {$ENDC}
  21.  
  22. {$IFC NOT UsingIncludes}
  23.  UNIT QuickTimeVR;
  24.  INTERFACE
  25. {$ENDC}
  26.  
  27. {$IFC UNDEFINED __QUICKTIMEVR__}
  28. {$SETC __QUICKTIMEVR__ := 1}
  29.  
  30. {$I+}
  31. {$SETC QuickTimeVRIncludes := UsingIncludes}
  32. {$SETC UsingIncludes := 1}
  33.  
  34. {$IFC UNDEFINED __CONDITIONALMACROS__}
  35. {$I ConditionalMacros.p}
  36. {$ENDC}
  37. {$IFC UNDEFINED __DIALOGS__}
  38. {$I Dialogs.p}
  39. {$ENDC}
  40. {$IFC UNDEFINED __MOVIES__}
  41. {$I Movies.p}
  42. {$ENDC}
  43.  
  44.  
  45. {$PUSH}
  46. {$ALIGN MAC68K}
  47. {$LibExport+}
  48.  
  49. {*****************************************************************************
  50.  *                                                                           **
  51.  * ABOUT QTVR_OLD_CALLS:                                                     **
  52.  *                                                                           **
  53.  * NOTE: Define QTVR_OLD_CALLS to 1 for your application makefile/project    **
  54.  *       only if you are sure that you need to use the older calls for       **
  55.  *       compatibility with VR 2.0 and 2.0.1 on the Macintosh                ** 
  56.  *                                                                           **
  57.  ****************************************************************************}
  58. {$IFC NOT NOT UNDEFINED QTVR_OLD_CALLS }
  59. {$SETC QTVR_OLD_CALLS := 0 }
  60. {$ENDC}
  61.  
  62.  
  63. TYPE
  64.     QTVRInstance = ^LONGINT;
  65.  
  66.  
  67. CONST
  68.     kQTVRControllerSubType        = 'ctyp';
  69.     kQTVRQTVRType                = 'qtvr';
  70.     kQTVRPanoramaType            = 'pano';
  71.     kQTVRObjectType                = 'obje';
  72.     kQTVROldPanoType            = 'STpn';                        {  Used in QTVR 1.0 release }
  73.     kQTVROldObjectType            = 'stna';                        {  Used in QTVR 1.0 release }
  74.  
  75. {$IFC TARGET_OS_MAC }
  76. {$ELSEC}
  77. {$ENDC}  {TARGET_OS_MAC}
  78.  
  79. {  QTVR hot spot types }
  80.     kQTVRHotSpotLinkType        = 'link';
  81.     kQTVRHotSpotURLType            = 'url ';
  82.     kQTVRHotSpotUndefinedType    = 'undf';
  83.  
  84. {  Special Values for nodeID in QTVRGoToNodeID }
  85.     kQTVRCurrentNode            = 0;
  86.     kQTVRPreviousNode            = $80000000;
  87.     kQTVRDefaultNode            = $80000001;
  88.  
  89. {  Panorama correction modes used for the kQTVRImagingCorrection imaging property }
  90.     kQTVRNoCorrection            = 0;
  91.     kQTVRPartialCorrection        = 1;
  92.     kQTVRFullCorrection            = 2;
  93.  
  94. {  Imaging Modes used by QTVRSetImagingProperty, QTVRGetImagingProperty, QTVRUpdate, QTVRBeginUpdate }
  95.     kQTVRStatic                    = 1;
  96.     kQTVRMotion                    = 2;
  97.     kQTVRCurrentMode            = 0;                            {  Special Value for QTVRUpdate }
  98.     kQTVRAllModes                = 100;                            {  Special value for QTVRSetProperty }
  99.  
  100.  
  101. TYPE
  102.     QTVRImagingMode                        = UInt32;
  103. {  Imaging Properties used by QTVRSetImagingProperty, QTVRGetImagingProperty }
  104.  
  105. CONST
  106.     kQTVRImagingCorrection        = 1;
  107.     kQTVRImagingQuality            = 2;
  108.     kQTVRImagingDirectDraw        = 3;
  109.     kQTVRImagingCurrentMode        = 100;                            {  Get Only }
  110.  
  111. {  OR the above with kImagingDefaultValue to get/set the default value }
  112.     kImagingDefaultValue        = $80000000;
  113.  
  114. {  Transition Types used by QTVRSetTransitionProperty, QTVREnableTransition }
  115.     kQTVRTransitionSwing        = 1;
  116.  
  117. {  Transition Properties QTVRSetTransitionProperty }
  118.     kQTVRTransitionSpeed        = 1;
  119.     kQTVRTransitionDirection    = 2;
  120.  
  121. {  Constraint values used to construct value returned by GetConstraintStatus }
  122.     kQTVRUnconstrained            = 0;
  123.     kQTVRCantPanLeft            = $00000001;
  124.     kQTVRCantPanRight            = $00000002;
  125.     kQTVRCantPanUp                = $00000004;
  126.     kQTVRCantPanDown            = $00000008;
  127.     kQTVRCantZoomIn                = $00000010;
  128.     kQTVRCantZoomOut            = $00000020;
  129.     kQTVRCantTranslateLeft        = $00000040;
  130.     kQTVRCantTranslateRight        = $00000080;
  131.     kQTVRCantTranslateUp        = $00000100;
  132.     kQTVRCantTranslateDown        = $00000200;
  133.  
  134. {  Object-only mouse mode values used to construct value returned by QTVRGetCurrentMouseMode }
  135.     kQTVRPanning                = $00000001;                    {  standard objects, "object only" controllers }
  136.     kQTVRTranslating            = $00000002;                    {  all objects }
  137.     kQTVRZooming                = $00000004;                    {  all objects }
  138.     kQTVRScrolling                = $00000008;                    {  standard object arrow scrollers and joystick object }
  139.     kQTVRSelecting                = $00000010;                    {  object absolute controller }
  140.  
  141. {  Properties for use with QTVRSetInteractionProperty/GetInteractionProperty }
  142.     kQTVRInteractionMouseClickHysteresis = 1;                    {  pixels within which the mouse is considered not to have moved (UInt16) }
  143.     kQTVRInteractionMouseClickTimeout = 2;                        {  ticks after which a mouse click times out and turns into panning (UInt32) }
  144.     kQTVRInteractionPanTiltSpeed = 3;                            {  control the relative pan/tilt speed from 1 (slowest) to 10 (fastest). (UInt32) Default is 5; }
  145.     kQTVRInteractionZoomSpeed    = 4;                            {  control the relative zooming speed from 1 (slowest) to 10 (fastest). (UInt32) Default is 5; }
  146.     kQTVRInteractionTranslateOnMouseDown = 101;                    {  Holding MouseDown with this setting translates zoomed object movies (Boolean) }
  147.     kQTVRInteractionMouseMotionScale = 102;                        {  The maximum angle of rotation caused by dragging across the display window. (* float) }
  148.     kQTVRInteractionNudgeMode    = 103;                            {  A QTVRNudgeMode: rotate, translate, or the same as the current mouse mode. Requires QTVR 2.1 }
  149.  
  150. {  OR the above with kQTVRInteractionDefaultValue to get/set the default value }
  151.     kQTVRInteractionDefaultValue = $80000000;
  152.  
  153.  
  154. {  Geometry constants used in QTVRSetBackBufferPrefs, QTVRGetBackBufferSettings, QTVRGetBackBufferMemInfo }
  155.     kQTVRUseMovieGeometry        = 0;
  156.     kQTVRVerticalCylinder        = 'vcyl';
  157.  
  158. {  Resolution constants used in QTVRSetBackBufferPrefs, QTVRGetBackBufferSettings, QTVRGetBackBufferMemInfo }
  159.     kQTVRDefaultRes                = 0;
  160.     kQTVRFullRes                = $00000001;
  161.     kQTVRHalfRes                = $00000002;
  162.     kQTVRQuarterRes                = $00000004;
  163.  
  164. {  QTVR-specific pixelFormat constants used in QTVRSetBackBufferPrefs, QTVRGetBackBufferSettings, QTVRGetBackBufferMemInfo }
  165.     kQTVRUseMovieDepth            = 0;
  166.  
  167. {  Cache Size Pref constants used in QTVRSetBackBufferPrefs, QTVRGetBackBufferSettings }
  168.     kQTVRMinimumCache            = -1;
  169.     kQTVRSuggestedCache            = 0;
  170.     kQTVRFullCache                = 1;
  171.  
  172. {  Angular units used by QTVRSetAngularUnits }
  173.     kQTVRDegrees                = 0;
  174.     kQTVRRadians                = 1;
  175.  
  176.  
  177. TYPE
  178.     QTVRAngularUnits                    = UInt32;
  179. {  Values for enableFlag parameter in QTVREnableHotSpot }
  180.  
  181. CONST
  182.     kQTVRHotSpotID                = 0;
  183.     kQTVRHotSpotType            = 1;
  184.     kQTVRAllHotSpots            = 2;
  185.  
  186. {  Values for kind parameter in QTVRGet/SetConstraints, QTVRGetViewingLimits }
  187.     kQTVRPan                    = 0;
  188.     kQTVRTilt                    = 1;
  189.     kQTVRFieldOfView            = 2;
  190.     kQTVRViewCenterH            = 4;                            {  WrapAndConstrain only }
  191.     kQTVRViewCenterV            = 5;                            {  WrapAndConstrain only }
  192.  
  193. {  Values for setting parameter in QTVRSetAnimationSetting, QTVRGetAnimationSetting }
  194.                                                                 {  View Frame Animation Settings }
  195.     kQTVRPalindromeViewFrames    = 1;
  196.     kQTVRStartFirstViewFrame    = 2;
  197.     kQTVRDontLoopViewFrames        = 3;
  198.     kQTVRPlayEveryViewFrame        = 4;                            {  Requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10) }
  199.                                                                 {  View Animation Settings }
  200.     kQTVRSyncViewToFrameRate    = 16;
  201.     kQTVRPalindromeViews        = 17;
  202.     kQTVRPlayStreamingViews        = 18;                            {  Requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10) }
  203.  
  204.  
  205. TYPE
  206.     QTVRObjectAnimationSetting            = UInt32;
  207.  
  208. CONST
  209.     kQTVRWrapPan                = 1;
  210.     kQTVRWrapTilt                = 2;
  211.     kQTVRCanZoom                = 3;
  212.     kQTVRReverseHControl        = 4;
  213.     kQTVRReverseVControl        = 5;
  214.     kQTVRSwapHVControl            = 6;
  215.     kQTVRTranslation            = 7;
  216.  
  217.  
  218. TYPE
  219.     QTVRControlSetting                    = UInt32;
  220.  
  221. CONST
  222.     kQTVRDefault                = 0;
  223.     kQTVRCurrent                = 2;
  224.     kQTVRMouseDown                = 3;
  225.  
  226.  
  227. TYPE
  228.     QTVRViewStateType                    = UInt32;
  229.  
  230. CONST
  231.     kQTVRRight                    = 0;
  232.     kQTVRUpRight                = 45;
  233.     kQTVRUp                        = 90;
  234.     kQTVRUpLeft                    = 135;
  235.     kQTVRLeft                    = 180;
  236.     kQTVRDownLeft                = 225;
  237.     kQTVRDown                    = 270;
  238.     kQTVRDownRight                = 315;
  239.  
  240.  
  241. TYPE
  242.     QTVRNudgeControl                    = UInt32;
  243.  
  244. CONST
  245.     kQTVRNudgeRotate            = 0;
  246.     kQTVRNudgeTranslate            = 1;
  247.     kQTVRNudgeSameAsMouse        = 2;
  248.  
  249.  
  250. TYPE
  251.     QTVRNudgeMode                        = UInt32;
  252. {  Flags to control elements of the QTVR control bar (set via mcActionSetFlags)  }
  253.  
  254. CONST
  255.     mcFlagQTVRSuppressBackBtn    = $00010000;
  256.     mcFlagQTVRSuppressZoomBtns    = $00020000;
  257.     mcFlagQTVRSuppressHotSpotBtn = $00040000;
  258.     mcFlagQTVRSuppressTranslateBtn = $00080000;
  259.     mcFlagQTVRSuppressHelpText    = $00100000;
  260.     mcFlagQTVRSuppressHotSpotNames = $00200000;
  261.     mcFlagQTVRExplicitFlagSet    = $80000000;                    {  bits 0->30 should be interpreted as "explicit on" for the corresponding suppression bits }
  262.  
  263. {  Cursor types used in type field of QTVRCursorRecord }
  264.     kQTVRUseDefaultCursor        = 0;
  265.     kQTVRStdCursorType            = 1;
  266.     kQTVRColorCursorType        = 2;
  267.  
  268. {  Values for flags parameter in QTVRMouseOverHotSpot callback }
  269.     kQTVRHotSpotEnter            = 0;
  270.     kQTVRHotSpotWithin            = 1;
  271.     kQTVRHotSpotLeave            = 2;
  272.  
  273. {  Values for flags parameter in QTVRSetPrescreenImagingCompleteProc }
  274.     kQTVRPreScreenEveryIdle        = $00000001;                    {  Requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10) }
  275.  
  276. {  Values for flags field of areasOfInterest in QTVRSetBackBufferImagingProc }
  277.     kQTVRBackBufferEveryUpdate    = $00000001;
  278.     kQTVRBackBufferEveryIdle    = $00000002;
  279.     kQTVRBackBufferAlwaysRefresh = $00000004;
  280.  
  281. {  Values for flagsIn parameter in QTVRBackBufferImaging callback }
  282.     kQTVRBackBufferRectVisible    = $00000001;
  283.     kQTVRBackBufferWasRefreshed    = $00000002;
  284.  
  285. {  Values for flagsOut parameter in QTVRBackBufferImaging callback }
  286.     kQTVRBackBufferFlagDidDraw    = $00000001;
  287.     kQTVRBackBufferFlagLastFlag    = $80000000;
  288.  
  289. {  QTVRCursorRecord used in QTVRReplaceCursor }
  290.  
  291. TYPE
  292.     QTVRCursorRecordPtr = ^QTVRCursorRecord;
  293.     QTVRCursorRecord = RECORD
  294.         theType:                UInt16;                                    {  field was previously named "type" }
  295.         rsrcID:                    SInt16;
  296.         handle:                    Handle;
  297.     END;
  298.  
  299.     QTVRFloatPointPtr = ^QTVRFloatPoint;
  300.     QTVRFloatPoint = RECORD
  301.         x:                        Single;
  302.         y:                        Single;
  303.     END;
  304.  
  305. {  Struct used for areasOfInterest parameter in QTVRSetBackBufferImagingProc }
  306.     QTVRAreaOfInterestPtr = ^QTVRAreaOfInterest;
  307.     QTVRAreaOfInterest = RECORD
  308.         panAngle:                Single;
  309.         tiltAngle:                Single;
  310.         width:                    Single;
  311.         height:                    Single;
  312.         flags:                    UInt32;
  313.     END;
  314.  
  315. {
  316.   =================================================================================================
  317.    Callback routines 
  318.   -------------------------------------------------------------------------------------------------
  319. }
  320.  
  321. {$IFC TYPED_FUNCTION_POINTERS}
  322.     QTVRLeavingNodeProcPtr = FUNCTION(qtvr: QTVRInstance; fromNodeID: UInt32; toNodeID: UInt32; VAR cancel: BOOLEAN; refCon: SInt32): OSErr;
  323. {$ELSEC}
  324.     QTVRLeavingNodeProcPtr = ProcPtr;
  325. {$ENDC}
  326.  
  327. {$IFC TYPED_FUNCTION_POINTERS}
  328.     QTVREnteringNodeProcPtr = FUNCTION(qtvr: QTVRInstance; nodeID: UInt32; refCon: SInt32): OSErr;
  329. {$ELSEC}
  330.     QTVREnteringNodeProcPtr = ProcPtr;
  331. {$ENDC}
  332.  
  333. {$IFC TYPED_FUNCTION_POINTERS}
  334.     QTVRMouseOverHotSpotProcPtr = FUNCTION(qtvr: QTVRInstance; hotSpotID: UInt32; flags: UInt32; refCon: SInt32): OSErr;
  335. {$ELSEC}
  336.     QTVRMouseOverHotSpotProcPtr = ProcPtr;
  337. {$ENDC}
  338.  
  339. {$IFC TYPED_FUNCTION_POINTERS}
  340.     QTVRImagingCompleteProcPtr = FUNCTION(qtvr: QTVRInstance; refCon: SInt32): OSErr;
  341. {$ELSEC}
  342.     QTVRImagingCompleteProcPtr = ProcPtr;
  343. {$ENDC}
  344.  
  345. {$IFC TYPED_FUNCTION_POINTERS}
  346.     QTVRBackBufferImagingProcPtr = FUNCTION(qtvr: QTVRInstance; VAR drawRect: Rect; areaIndex: UInt16; flagsIn: UInt32; VAR flagsOut: UInt32; refCon: SInt32): OSErr;
  347. {$ELSEC}
  348.     QTVRBackBufferImagingProcPtr = ProcPtr;
  349. {$ENDC}
  350.  
  351.     QTVRLeavingNodeUPP = UniversalProcPtr;
  352.     QTVREnteringNodeUPP = UniversalProcPtr;
  353.     QTVRMouseOverHotSpotUPP = UniversalProcPtr;
  354.     QTVRImagingCompleteUPP = UniversalProcPtr;
  355.     QTVRBackBufferImagingUPP = UniversalProcPtr;
  356.  
  357. CONST
  358.     uppQTVRLeavingNodeProcInfo = $0000FFE0;
  359.     uppQTVREnteringNodeProcInfo = $00000FE0;
  360.     uppQTVRMouseOverHotSpotProcInfo = $00003FE0;
  361.     uppQTVRImagingCompleteProcInfo = $000003E0;
  362.     uppQTVRBackBufferImagingProcInfo = $0003FBE0;
  363.  
  364. FUNCTION NewQTVRLeavingNodeProc(userRoutine: QTVRLeavingNodeProcPtr): QTVRLeavingNodeUPP;
  365.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  366.     INLINE $2E9F;
  367.     {$ENDC}
  368.  
  369. FUNCTION NewQTVREnteringNodeProc(userRoutine: QTVREnteringNodeProcPtr): QTVREnteringNodeUPP;
  370.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  371.     INLINE $2E9F;
  372.     {$ENDC}
  373.  
  374. FUNCTION NewQTVRMouseOverHotSpotProc(userRoutine: QTVRMouseOverHotSpotProcPtr): QTVRMouseOverHotSpotUPP;
  375.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  376.     INLINE $2E9F;
  377.     {$ENDC}
  378.  
  379. FUNCTION NewQTVRImagingCompleteProc(userRoutine: QTVRImagingCompleteProcPtr): QTVRImagingCompleteUPP;
  380.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  381.     INLINE $2E9F;
  382.     {$ENDC}
  383.  
  384. FUNCTION NewQTVRBackBufferImagingProc(userRoutine: QTVRBackBufferImagingProcPtr): QTVRBackBufferImagingUPP;
  385.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  386.     INLINE $2E9F;
  387.     {$ENDC}
  388.  
  389. FUNCTION CallQTVRLeavingNodeProc(qtvr: QTVRInstance; fromNodeID: UInt32; toNodeID: UInt32; VAR cancel: BOOLEAN; refCon: SInt32; userRoutine: QTVRLeavingNodeUPP): OSErr;
  390.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  391.     INLINE $205F, $4E90;
  392.     {$ENDC}
  393.  
  394. FUNCTION CallQTVREnteringNodeProc(qtvr: QTVRInstance; nodeID: UInt32; refCon: SInt32; userRoutine: QTVREnteringNodeUPP): OSErr;
  395.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  396.     INLINE $205F, $4E90;
  397.     {$ENDC}
  398.  
  399. FUNCTION CallQTVRMouseOverHotSpotProc(qtvr: QTVRInstance; hotSpotID: UInt32; flags: UInt32; refCon: SInt32; userRoutine: QTVRMouseOverHotSpotUPP): OSErr;
  400.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  401.     INLINE $205F, $4E90;
  402.     {$ENDC}
  403.  
  404. FUNCTION CallQTVRImagingCompleteProc(qtvr: QTVRInstance; refCon: SInt32; userRoutine: QTVRImagingCompleteUPP): OSErr;
  405.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  406.     INLINE $205F, $4E90;
  407.     {$ENDC}
  408.  
  409. FUNCTION CallQTVRBackBufferImagingProc(qtvr: QTVRInstance; VAR drawRect: Rect; areaIndex: UInt16; flagsIn: UInt32; VAR flagsOut: UInt32; refCon: SInt32; userRoutine: QTVRBackBufferImagingUPP): OSErr;
  410.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  411.     INLINE $205F, $4E90;
  412.     {$ENDC}
  413. {
  414.   =================================================================================================
  415.     QTVR Intercept Struct, Callback, Routine Descriptors 
  416.   -------------------------------------------------------------------------------------------------
  417. }
  418.  
  419.  
  420. CONST
  421.     kQTVRSetPanAngleSelector    = $2000;
  422.     kQTVRSetTiltAngleSelector    = $2001;
  423.     kQTVRSetFieldOfViewSelector    = $2002;
  424.     kQTVRSetViewCenterSelector    = $2003;
  425.     kQTVRMouseEnterSelector        = $2004;
  426.     kQTVRMouseWithinSelector    = $2005;
  427.     kQTVRMouseLeaveSelector        = $2006;
  428.     kQTVRMouseDownSelector        = $2007;
  429.     kQTVRMouseStillDownSelector    = $2008;
  430.     kQTVRMouseUpSelector        = $2009;
  431.     kQTVRTriggerHotSpotSelector    = $200A;
  432.     kQTVRGetHotSpotTypeSelector    = $200B;                        {  Requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10) }
  433.  
  434.  
  435. TYPE
  436.     QTVRProcSelector                    = UInt32;
  437.     QTVRInterceptRecordPtr = ^QTVRInterceptRecord;
  438.     QTVRInterceptRecord = RECORD
  439.         reserved1:                SInt32;
  440.         selector:                SInt32;
  441.         reserved2:                SInt32;
  442.         reserved3:                SInt32;
  443.         paramCount:                SInt32;
  444.         parameter:                ARRAY [0..5] OF Ptr;
  445.     END;
  446.  
  447.     QTVRInterceptPtr                    = ^QTVRInterceptRecord;
  448. {  Prototype for Intercept Proc callback }
  449. {$IFC TYPED_FUNCTION_POINTERS}
  450.     QTVRInterceptProcPtr = PROCEDURE(qtvr: QTVRInstance; qtvrMsg: QTVRInterceptPtr; refCon: SInt32; VAR cancel: BOOLEAN);
  451. {$ELSEC}
  452.     QTVRInterceptProcPtr = ProcPtr;
  453. {$ENDC}
  454.  
  455.     QTVRInterceptUPP = UniversalProcPtr;
  456.  
  457. CONST
  458.     uppQTVRInterceptProcInfo = $00003FC0;
  459.  
  460. FUNCTION NewQTVRInterceptProc(userRoutine: QTVRInterceptProcPtr): QTVRInterceptUPP;
  461.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  462.     INLINE $2E9F;
  463.     {$ENDC}
  464.  
  465. PROCEDURE CallQTVRInterceptProc(qtvr: QTVRInstance; qtvrMsg: QTVRInterceptPtr; refCon: SInt32; VAR cancel: BOOLEAN; userRoutine: QTVRInterceptUPP);
  466.     {$IFC TARGET_OS_MAC AND TARGET_CPU_68K AND NOT TARGET_RT_MAC_CFM}
  467.     INLINE $205F, $4E90;
  468.     {$ENDC}
  469. {
  470.   =================================================================================================
  471.     Initialization QTVR calls 
  472.   -------------------------------------------------------------------------------------------------
  473.    Requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10) and only work on Non-Macintosh platforms
  474. }
  475. {$IFC NOT TARGET_OS_MAC }
  476. FUNCTION InitializeQTVR: OSErr; C;
  477. FUNCTION TerminateQTVR: OSErr; C;
  478. {$ENDC}
  479.  
  480. {
  481.   =================================================================================================
  482.     General QTVR calls 
  483.   -------------------------------------------------------------------------------------------------
  484. }
  485. FUNCTION QTVRGetQTVRTrack(theMovie: Movie; index: SInt32): Track; C;
  486. FUNCTION QTVRGetQTVRInstance(VAR qtvr: QTVRInstance; qtvrTrack: Track; mc: MovieController): OSErr; C;
  487. {
  488.   =================================================================================================
  489.     Viewing Angles and Zooming 
  490.   -------------------------------------------------------------------------------------------------
  491. }
  492.  
  493. FUNCTION QTVRSetPanAngle(qtvr: QTVRInstance; panAngle: Single): OSErr; C;
  494. FUNCTION QTVRGetPanAngle(qtvr: QTVRInstance): Single; C;
  495. FUNCTION QTVRSetTiltAngle(qtvr: QTVRInstance; tiltAngle: Single): OSErr; C;
  496. FUNCTION QTVRGetTiltAngle(qtvr: QTVRInstance): Single; C;
  497. FUNCTION QTVRSetFieldOfView(qtvr: QTVRInstance; fieldOfView: Single): OSErr; C;
  498. FUNCTION QTVRGetFieldOfView(qtvr: QTVRInstance): Single; C;
  499. FUNCTION QTVRShowDefaultView(qtvr: QTVRInstance): OSErr; C;
  500. {  Object Specific }
  501. FUNCTION QTVRSetViewCenter(qtvr: QTVRInstance; {CONST}VAR viewCenter: QTVRFloatPoint): OSErr; C;
  502. FUNCTION QTVRGetViewCenter(qtvr: QTVRInstance; VAR viewCenter: QTVRFloatPoint): OSErr; C;
  503. FUNCTION QTVRNudge(qtvr: QTVRInstance; direction: QTVRNudgeControl): OSErr; C;
  504. {  QTVRInteractionNudge requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10) }
  505. FUNCTION QTVRInteractionNudge(qtvr: QTVRInstance; direction: QTVRNudgeControl): OSErr; C;
  506. {
  507.   =================================================================================================
  508.     Scene and Node Location Information 
  509.   -------------------------------------------------------------------------------------------------
  510. }
  511.  
  512. FUNCTION QTVRGetVRWorld(qtvr: QTVRInstance; VAR VRWorld: QTAtomContainer): OSErr; C;
  513. FUNCTION QTVRGetNodeInfo(qtvr: QTVRInstance; nodeID: UInt32; VAR nodeInfo: QTAtomContainer): OSErr; C;
  514. FUNCTION QTVRGoToNodeID(qtvr: QTVRInstance; nodeID: UInt32): OSErr; C;
  515. FUNCTION QTVRGetCurrentNodeID(qtvr: QTVRInstance): UInt32; C;
  516. FUNCTION QTVRGetNodeType(qtvr: QTVRInstance; nodeID: UInt32): LONGINT; C;
  517. {
  518.   =================================================================================================
  519.     Hot Spot related calls 
  520.   -------------------------------------------------------------------------------------------------
  521. }
  522.  
  523. FUNCTION QTVRPtToHotSpotID(qtvr: QTVRInstance; pt: Point; VAR hotSpotID: UInt32): OSErr; C;
  524. {  QTVRGetHotSpotType requires QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10) }
  525. FUNCTION QTVRGetHotSpotType(qtvr: QTVRInstance; hotSpotID: UInt32; VAR hotSpotType: OSType): OSErr; C;
  526. FUNCTION QTVRTriggerHotSpot(qtvr: QTVRInstance; hotSpotID: UInt32; nodeInfo: QTAtomContainer; selectedAtom: QTAtom): OSErr; C;
  527. FUNCTION QTVRSetMouseOverHotSpotProc(qtvr: QTVRInstance; mouseOverHotSpotProc: QTVRMouseOverHotSpotUPP; refCon: SInt32; flags: UInt32): OSErr; C;
  528. FUNCTION QTVREnableHotSpot(qtvr: QTVRInstance; enableFlag: UInt32; hotSpotValue: UInt32; enable: BOOLEAN): OSErr; C;
  529. FUNCTION QTVRGetVisibleHotSpots(qtvr: QTVRInstance; hotSpots: Handle): UInt32; C;
  530. FUNCTION QTVRGetHotSpotRegion(qtvr: QTVRInstance; hotSpotID: UInt32; hotSpotRegion: RgnHandle): OSErr; C;
  531. {
  532.   =================================================================================================
  533.     Event & Cursor Handling Calls 
  534.   -------------------------------------------------------------------------------------------------
  535. }
  536.  
  537. FUNCTION QTVRSetMouseOverTracking(qtvr: QTVRInstance; enable: BOOLEAN): OSErr; C;
  538. FUNCTION QTVRGetMouseOverTracking(qtvr: QTVRInstance): BOOLEAN; C;
  539. FUNCTION QTVRSetMouseDownTracking(qtvr: QTVRInstance; enable: BOOLEAN): OSErr; C;
  540. FUNCTION QTVRGetMouseDownTracking(qtvr: QTVRInstance): BOOLEAN; C;
  541. FUNCTION QTVRMouseEnter(qtvr: QTVRInstance; pt: Point; VAR hotSpotID: UInt32; w: WindowPtr): OSErr; C;
  542. FUNCTION QTVRMouseWithin(qtvr: QTVRInstance; pt: Point; VAR hotSpotID: UInt32; w: WindowPtr): OSErr; C;
  543. FUNCTION QTVRMouseLeave(qtvr: QTVRInstance; pt: Point; w: WindowPtr): OSErr; C;
  544. FUNCTION QTVRMouseDown(qtvr: QTVRInstance; pt: Point; when: UInt32; modifiers: UInt16; VAR hotSpotID: UInt32; w: WindowPtr): OSErr; C;
  545. FUNCTION QTVRMouseStillDown(qtvr: QTVRInstance; pt: Point; VAR hotSpotID: UInt32; w: WindowPtr): OSErr; C;
  546. FUNCTION QTVRMouseUp(qtvr: QTVRInstance; pt: Point; VAR hotSpotID: UInt32; w: WindowPtr): OSErr; C;
  547. {  These require QTVR 2.01 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion01) }
  548. FUNCTION QTVRMouseStillDownExtended(qtvr: QTVRInstance; pt: Point; VAR hotSpotID: UInt32; w: WindowPtr; when: UInt32; modifiers: UInt16): OSErr; C;
  549. FUNCTION QTVRMouseUpExtended(qtvr: QTVRInstance; pt: Point; VAR hotSpotID: UInt32; w: WindowPtr; when: UInt32; modifiers: UInt16): OSErr; C;
  550. {
  551.   =================================================================================================
  552.     Intercept Routines 
  553.   -------------------------------------------------------------------------------------------------
  554. }
  555.  
  556. FUNCTION QTVRInstallInterceptProc(qtvr: QTVRInstance; selector: QTVRProcSelector; interceptProc: QTVRInterceptUPP; refCon: SInt32; flags: UInt32): OSErr; C;
  557. FUNCTION QTVRCallInterceptedProc(qtvr: QTVRInstance; VAR qtvrMsg: QTVRInterceptRecord): OSErr; C;
  558. {
  559.   =================================================================================================
  560.     Object Movie Specific Calls 
  561.   -------------------------------------------------------------------------------------------------
  562.    QTVRGetCurrentMouseMode requires QTRVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10)
  563. }
  564. FUNCTION QTVRGetCurrentMouseMode(qtvr: QTVRInstance): UInt32; C;
  565. FUNCTION QTVRSetFrameRate(qtvr: QTVRInstance; rate: Single): OSErr; C;
  566. FUNCTION QTVRGetFrameRate(qtvr: QTVRInstance): Single; C;
  567. FUNCTION QTVRSetViewRate(qtvr: QTVRInstance; rate: Single): OSErr; C;
  568. FUNCTION QTVRGetViewRate(qtvr: QTVRInstance): Single; C;
  569. FUNCTION QTVRSetViewCurrentTime(qtvr: QTVRInstance; time: TimeValue): OSErr; C;
  570. FUNCTION QTVRGetViewCurrentTime(qtvr: QTVRInstance): TimeValue; C;
  571. FUNCTION QTVRGetCurrentViewDuration(qtvr: QTVRInstance): TimeValue; C;
  572. {
  573.   =================================================================================================
  574.    View State Calls - QTVR Object Only
  575.   -------------------------------------------------------------------------------------------------
  576. }
  577.  
  578. FUNCTION QTVRSetViewState(qtvr: QTVRInstance; viewStateType: QTVRViewStateType; state: UInt16): OSErr; C;
  579. FUNCTION QTVRGetViewState(qtvr: QTVRInstance; viewStateType: QTVRViewStateType; VAR state: UInt16): OSErr; C;
  580. FUNCTION QTVRGetViewStateCount(qtvr: QTVRInstance): UInt16; C;
  581. FUNCTION QTVRSetAnimationSetting(qtvr: QTVRInstance; setting: QTVRObjectAnimationSetting; enable: BOOLEAN): OSErr; C;
  582. FUNCTION QTVRGetAnimationSetting(qtvr: QTVRInstance; setting: QTVRObjectAnimationSetting; VAR enable: BOOLEAN): OSErr; C;
  583. FUNCTION QTVRSetControlSetting(qtvr: QTVRInstance; setting: QTVRControlSetting; enable: BOOLEAN): OSErr; C;
  584. FUNCTION QTVRGetControlSetting(qtvr: QTVRInstance; setting: QTVRControlSetting; VAR enable: BOOLEAN): OSErr; C;
  585. FUNCTION QTVREnableFrameAnimation(qtvr: QTVRInstance; enable: BOOLEAN): OSErr; C;
  586. FUNCTION QTVRGetFrameAnimation(qtvr: QTVRInstance): BOOLEAN; C;
  587. FUNCTION QTVREnableViewAnimation(qtvr: QTVRInstance; enable: BOOLEAN): OSErr; C;
  588. FUNCTION QTVRGetViewAnimation(qtvr: QTVRInstance): BOOLEAN; C;
  589.  
  590. {
  591.   =================================================================================================
  592.     Imaging Characteristics 
  593.   -------------------------------------------------------------------------------------------------
  594. }
  595.  
  596. FUNCTION QTVRSetVisible(qtvr: QTVRInstance; visible: BOOLEAN): OSErr; C;
  597. FUNCTION QTVRGetVisible(qtvr: QTVRInstance): BOOLEAN; C;
  598. FUNCTION QTVRSetImagingProperty(qtvr: QTVRInstance; imagingMode: QTVRImagingMode; imagingProperty: UInt32; propertyValue: SInt32): OSErr; C;
  599. FUNCTION QTVRGetImagingProperty(qtvr: QTVRInstance; imagingMode: QTVRImagingMode; imagingProperty: UInt32; VAR propertyValue: SInt32): OSErr; C;
  600. FUNCTION QTVRUpdate(qtvr: QTVRInstance; imagingMode: QTVRImagingMode): OSErr; C;
  601. FUNCTION QTVRBeginUpdateStream(qtvr: QTVRInstance; imagingMode: QTVRImagingMode): OSErr; C;
  602. FUNCTION QTVREndUpdateStream(qtvr: QTVRInstance): OSErr; C;
  603. FUNCTION QTVRSetTransitionProperty(qtvr: QTVRInstance; transitionType: UInt32; transitionProperty: UInt32; transitionValue: SInt32): OSErr; C;
  604. FUNCTION QTVREnableTransition(qtvr: QTVRInstance; transitionType: UInt32; enable: BOOLEAN): OSErr; C;
  605. {
  606.   =================================================================================================
  607.     Basic Conversion and Math Routines 
  608.   -------------------------------------------------------------------------------------------------
  609. }
  610.  
  611. FUNCTION QTVRSetAngularUnits(qtvr: QTVRInstance; units: QTVRAngularUnits): OSErr; C;
  612. FUNCTION QTVRGetAngularUnits(qtvr: QTVRInstance): QTVRAngularUnits; C;
  613. {  Pano specific routines }
  614. FUNCTION QTVRPtToAngles(qtvr: QTVRInstance; pt: Point; VAR panAngle: Single; VAR tiltAngle: Single): OSErr; C;
  615. FUNCTION QTVRCoordToAngles(qtvr: QTVRInstance; VAR coord: QTVRFloatPoint; VAR panAngle: Single; VAR tiltAngle: Single): OSErr; C;
  616. FUNCTION QTVRAnglesToCoord(qtvr: QTVRInstance; panAngle: Single; tiltAngle: Single; VAR coord: QTVRFloatPoint): OSErr; C;
  617. {  Object specific routines }
  618. FUNCTION QTVRPanToColumn(qtvr: QTVRInstance; panAngle: Single): INTEGER; C;
  619. {  zero based     }
  620. FUNCTION QTVRColumnToPan(qtvr: QTVRInstance; column: INTEGER): Single; C;
  621. {  zero based     }
  622. FUNCTION QTVRTiltToRow(qtvr: QTVRInstance; tiltAngle: Single): INTEGER; C;
  623. {  zero based     }
  624. FUNCTION QTVRRowToTilt(qtvr: QTVRInstance; row: INTEGER): Single; C;
  625. {  zero based                 }
  626. FUNCTION QTVRWrapAndConstrain(qtvr: QTVRInstance; kind: INTEGER; value: Single; VAR result: Single): OSErr; C;
  627.  
  628. {
  629.   =================================================================================================
  630.     Interaction Routines 
  631.   -------------------------------------------------------------------------------------------------
  632. }
  633.  
  634. FUNCTION QTVRSetEnteringNodeProc(qtvr: QTVRInstance; enteringNodeProc: QTVREnteringNodeUPP; refCon: SInt32; flags: UInt32): OSErr; C;
  635. FUNCTION QTVRSetLeavingNodeProc(qtvr: QTVRInstance; leavingNodeProc: QTVRLeavingNodeUPP; refCon: SInt32; flags: UInt32): OSErr; C;
  636. FUNCTION QTVRSetInteractionProperty(qtvr: QTVRInstance; property: UInt32; value: UNIV Ptr): OSErr; C;
  637. FUNCTION QTVRGetInteractionProperty(qtvr: QTVRInstance; property: UInt32; value: UNIV Ptr): OSErr; C;
  638. FUNCTION QTVRReplaceCursor(qtvr: QTVRInstance; VAR cursRecord: QTVRCursorRecord): OSErr; C;
  639. {
  640.   =================================================================================================
  641.     Viewing Limits and Constraints 
  642.   -------------------------------------------------------------------------------------------------
  643. }
  644.  
  645. FUNCTION QTVRGetViewingLimits(qtvr: QTVRInstance; kind: UInt16; VAR minValue: Single; VAR maxValue: Single): OSErr; C;
  646. FUNCTION QTVRGetConstraintStatus(qtvr: QTVRInstance): UInt32; C;
  647. FUNCTION QTVRGetConstraints(qtvr: QTVRInstance; kind: UInt16; VAR minValue: Single; VAR maxValue: Single): OSErr; C;
  648. FUNCTION QTVRSetConstraints(qtvr: QTVRInstance; kind: UInt16; minValue: Single; maxValue: Single): OSErr; C;
  649.  
  650. {
  651.   =================================================================================================
  652.     Back Buffer Memory Management 
  653.   -------------------------------------------------------------------------------------------------
  654. }
  655.  
  656. FUNCTION QTVRGetAvailableResolutions(qtvr: QTVRInstance; VAR resolutionsMask: UInt16): OSErr; C;
  657. {  These require QTVR 2.1 (kQTVRAPIMajorVersion02 + kQTVRAPIMinorVersion10) }
  658. FUNCTION QTVRGetBackBufferMemInfo(qtvr: QTVRInstance; geometry: UInt32; resolution: UInt16; cachePixelFormat: UInt32; VAR minCacheBytes: SInt32; VAR suggestedCacheBytes: SInt32; VAR fullCacheBytes: SInt32): OSErr; C;
  659. FUNCTION QTVRGetBackBufferSettings(qtvr: QTVRInstance; VAR geometry: UInt32; VAR resolution: UInt16; VAR cachePixelFormat: UInt32; VAR cacheSize: SInt16): OSErr; C;
  660. FUNCTION QTVRSetBackBufferPrefs(qtvr: QTVRInstance; geometry: UInt32; resolution: UInt16; cachePixelFormat: UInt32; cacheSize: SInt16): OSErr; C;
  661. {$IFC QTVR_OLD_CALLS }
  662. {$IFC TARGET_OS_MAC }
  663. {
  664.    These ≈Cache≈ calls have been replaced with the ≈BackBuffer≈ versions above.
  665.    However, the ≈BackBuffer≈ calls require QuickTime VR 2.1 to work;
  666.     these calls will work with QuickTime VR 2.0 and 2.0.1, but only on a Macintosh.
  667. }
  668. FUNCTION QTVRGetCacheMemInfo(qtvr: QTVRInstance; resolution: UInt16; cacheDepth: SInt16; VAR minCacheBytes: SInt32; VAR suggestedCacheBytes: SInt32; VAR fullCacheBytes: SInt32): OSErr; C;
  669. FUNCTION QTVRGetCacheSettings(qtvr: QTVRInstance; VAR resolution: UInt16; VAR cacheDepth: SInt16; VAR cacheSize: SInt16): OSErr; C;
  670. FUNCTION QTVRSetCachePrefs(qtvr: QTVRInstance; resolution: UInt16; cacheDepth: SInt16; cacheSize: SInt16): OSErr; C;
  671. {$ENDC}
  672. {$ENDC}  {QTVR_OLD_CALLS}
  673.  
  674. {
  675.   =================================================================================================
  676.     Buffer Access 
  677.   -------------------------------------------------------------------------------------------------
  678. }
  679.  
  680. FUNCTION QTVRSetPrescreenImagingCompleteProc(qtvr: QTVRInstance; imagingCompleteProc: QTVRImagingCompleteUPP; refCon: SInt32; flags: UInt32): OSErr; C;
  681. FUNCTION QTVRSetBackBufferImagingProc(qtvr: QTVRInstance; backBufferImagingProc: QTVRBackBufferImagingUPP; numAreas: UInt16; VAR areasOfInterest: QTVRAreaOfInterest; refCon: SInt32): OSErr; C;
  682. FUNCTION QTVRRefreshBackBuffer(qtvr: QTVRInstance; flags: UInt32): OSErr; C;
  683.  
  684.  
  685. {
  686.   =================================================================================================
  687.     Old Names
  688.   -------------------------------------------------------------------------------------------------
  689. }
  690. {$IFC OLDROUTINENAMES }
  691.  
  692. TYPE
  693.     CursorRecord                        = QTVRCursorRecord;
  694.     CursorRecordPtr                     = ^CursorRecord;
  695.     AreaOfInterest                        = QTVRAreaOfInterest;
  696.     AreaOfInterestPtr                     = ^AreaOfInterest;
  697.     FloatPoint                            = QTVRFloatPoint;
  698.     FloatPointPtr                         = ^FloatPoint;
  699.     LeavingNodeProcPtr                    = QTVRLeavingNodeProcPtr;
  700.     LeavingNodeUPP                        = QTVRLeavingNodeUPP;
  701.     EnteringNodeProcPtr                    = QTVREnteringNodeProcPtr;
  702.     EnteringNodeUPP                        = QTVREnteringNodeUPP;
  703.     MouseOverHotSpotProcPtr                = QTVRMouseOverHotSpotProcPtr;
  704.     MouseOverHotSpotUPP                    = QTVRMouseOverHotSpotUPP;
  705.     ImagingCompleteProcPtr                = QTVRImagingCompleteProcPtr;
  706.     ImagingCompleteUPP                    = QTVRImagingCompleteUPP;
  707.     BackBufferImagingProcPtr            = QTVRBackBufferImagingProcPtr;
  708.     BackBufferImagingUPP                = QTVRBackBufferImagingUPP;
  709. {$ENDC}  {OLDROUTINENAMES}
  710.  
  711.  
  712. {$ALIGN RESET}
  713. {$POP}
  714.  
  715. {$SETC UsingIncludes := QuickTimeVRIncludes}
  716.  
  717. {$ENDC} {__QUICKTIMEVR__}
  718.  
  719. {$IFC NOT UsingIncludes}
  720.  END.
  721. {$ENDC}
  722.